//
//  WBStatusListViewModel.swift
//  WeiBo
//
//  Created by 韩菲菲 on 16/8/13.
//  Copyright © 2016年 韩菲菲. All rights reserved.
//

import UIKit

class WBStatusListViewModel: NSObject {
    
    //懒加载数据源数组
    lazy var dataArray: [WBStatusViewModel] = [WBStatusViewModel]()
    
    
}

//请求首页数据
extension WBStatusListViewModel{
    
    //请求数据 外界在这个方法中传递给我是上拉加载更多isPullUp  还是下拉
    func loadHomeData(isPullUp: Bool,finish:(isSuccess: Bool , count: Int)->()) {
        
        //如何设置两个参数
        //若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0
        var since_id:Int64 = 0
        //若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
        var max_id:Int64 = 0
        
        if isPullUp{
            //是上啦加载更多
            // 找到当前数据中最后一个数据的id 设置为sinceid
            max_id = dataArray.last?.statusModel?.id ?? 0
            //判断
            if max_id > 0{
                
                //说明要去加载更多
                //从哪个id开始加载
                max_id = max_id - 1
            }
            
        }else
        {
            //下载刷新
            since_id = dataArray.first?.statusModel?.id ?? 0
            
        }
        
        WBStatusDAL.checkoutCache(since_id, max_id: max_id) { (result) in
            
            guard let res = result else{
                
                finish(isSuccess: false, count: 0)
                
                return
                
            }
            
            //创建可变数组
            var arrM:[WBStatusViewModel] = [WBStatusViewModel]()
            
            //遍历数组 字典转模型  创建模型
            for dict in res{
                
                let model = WBStatusListModel(dict: dict)
                
                let viewModel = WBStatusViewModel(status: model)
                
                arrM.append(viewModel)
                
            }
            //数组的顺序要变化 根据上啦或者下拉判断
            //给数据源数组赋值
            if isPullUp{
                //上啦加载更多
                self.dataArray = self.dataArray + arrM
                
            }else{
                //下拉刷新
                self.dataArray = arrM + self.dataArray
                
            }
            
            
            finish(isSuccess: true, count: arrM.count)
        }
        
    }
    
    //
    //        WBNetworkingTool.sharedTool.getHomeData(since_id, max_id: max_id, success: { (response) in
    //
    //            guard let result = response?["statuses"] as? [[String:AnyObject]] else{
    //                finish(isSuccess: false)
    //                return
    //            }
    //
    //            //保存数据
    //            WBStatusDAL.saveCache(result)
    //
    //            //创建可变数组
    //            var arrM:[WBStatusViewModel] = [WBStatusViewModel]()
    //
    //            //遍历数组 字典转模型  创建模型
    //            for dict in result{
    //
    //                let model = WBStatusListModel(dict: dict)
    //
    //                let viewModel = WBStatusViewModel(status: model)
    //
    //                arrM.append(viewModel)
    //
    //            }
    //            //数组的顺序要变化 根据上啦或者下拉判断
    //            //给数据源数组赋值
    //            if isPullUp{
    //                //上啦加载更多
    //                self.dataArray = self.dataArray + arrM
    //
    //            }else{
    //                //下拉刷新
    //                self.dataArray = arrM + self.dataArray
    //
    //            }
    //
    //            print(self.dataArray.count)
    //
    //            finish(isSuccess: true)
    //
    //            //刷新UI
    //
    //
    //        }) { (error) in
    //            
    //            finish(isSuccess: false)
    //            print("请求失败\(error)")
    //            
    //        }
    //        
    //    }
    
    
    
}